图像处理20210808

344次阅读
没有评论

共计 920 个字符,预计需要花费 3 分钟才能阅读完成。

提醒:本文最后更新于 2024-10-04 08:11,文中所关联的信息可能已发生改变,请知悉!

降噪后出现边缘“毛刺”问题

中值滤波

使用 opencv 中的 medianBlur 解决方案:

medianBlur_new_img = cv.medianBlur(new_img, 3)

可以优化之前的降噪效果:

图像处理 20210808

效果几乎达到理想状态(只有四周边界有些许噪声残留)

探究中值滤波起了多大作用

尝试直接使用中值滤波对噪声图进行降噪:

# python3.8
# utf-8
import cv2 as cv

def main(address):
    img = cv.imread(address, 1)
    new_img = cv.medianBlur(img, 3)
    cv.imwrite('denoised_' + address, new_img)

if __name__ == '__main__':
    img_address = 'img_noise.png'
    main(img_address)

得到结果:

图像处理 20210808

虽然效果略微比上面差一点,但是几乎接近。

那么从这个结果看,可以看出中值滤波的算法非常优秀,虽然这无法证明中值滤波在上面试验中起到了多大作用,但也说明了我的方法效果还是欠缺的。

增加噪声

将噪声增加到 8000 个,也就是 20% 的噪声:

import cv2 as cv
import numpy as np
import random

img = cv.imread("img.png", 1)
(rows, cols, chn) = img.shape
cv.imshow("img.png", img)

# 加噪声
for i in range(8000):
    x = np.random.randint(0, rows)
    y = np.random.randint(0, cols)
    img[x, y, :] = random.randint(0, 255)

cv.imshow("noise", img)
cv.imwrite("img_noise.png", img)
cv.waitKey()
cv.destroyAllWindows()

图像处理 20210808

中值滤波

直接使用中值滤波,得到:

图像处理 20210808

这次得到的结果就并不理想了

我的方法 + 中值滤波

得到:

图像处理 20210808

结果优于直接使用中值滤波,在不放大的情况下,肉眼不太看得出噪声,放大之后,发现边缘部分仍有极少量“毛刺”,且边缘界限变得模糊。对于肉眼观察来说,图像变得柔和;对于寻找边缘来说,变得不明确。

正文完
 0
icvuln
版权声明:本站原创文章,由 icvuln 于2021-08-08发表,共计920字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
评论(没有评论)